/*!
 * Copyright (c) 2023-present StarDreamNet
 */
(document.loader || (document.loader = [])).push(["register", function (require, exports, module) {

    function diffEmail(email) { // 检查邮箱格式
        return /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/.test(email);
    };

    const verify = require("verify"); // 引入验证模块

    let verified = false; // 人机验证完毕
    let verifing = false; // 人机验证中

    $('#verify').on("click", function () { // 点击人机验证按钮
        // 如果验证过了或者验证中泽跳过
        if (verified || verifing) return;

        // 禁用按钮，防止多次点击
        verifing = true;
        this.disabled = true;

        verify.start().then(id => { // 验证结束
            verifing = false;
            this.disabled = false;

            // 如果id存在（验证成功）
            if (id) {
                verified = true;
                this.innerText = '验证完毕';
                this.disabled = true;
            }
        })
    });

    $('#registerButton').on("click", function () { // 点击注册按钮
        // 获取输入框中的邮箱和验证码等信息
        var email = $('#email').val(); // 邮箱
        var password = $('#password').val(); // 密码
        var name = $('#name').val(); // 昵称
        var code = $('#code').val(); // 验证码

        // 设置请求的url
        var url = '/api/register';

        // 禁用按钮，防止多次点击
        this.disabled = true;
        $("#email,#password,#name,#code").prop("disabled", true);

        // 发起post请求
        $.ajax(url, {
            method: 'POST',
            contentType: 'application/json',
            dataType: 'json',
            data: JSON.stringify({
                email: email, // 邮箱
                pw: password, // 密码
                code: code, // 验证码
                name: name // 昵称
            })
        }).done((data) => {
            if (data.code == 200) { // 状况码为200，注册成功
                swal.skip({
                    title: "注册成功"
                });
            } else { // 否则注册失败
                dsnackbar('error', data.msg);
                this.disabled = false;
                $("#email,#password,#name,#code").prop("disabled", false);
            }
        }).fail(() => {
            dsnackbar('error', '请稍后再试');
            this.disabled = false;
            $("#email,#password,#name,#code").prop("disabled", false);
        });
    });

    $('#send_code').on("click", function () { // 点击发送验证码按钮
        // 获取输入框中的邮箱
        var email = $('#email').val();

        // 检查邮箱格式
        if (!email || !diffEmail(email)) {
            return dsnackbar('warning', '请先正确填写邮箱~');
        };

        // 禁用按钮，防止多次点击
        this.disabled = true;
        $("#email").prop("disabled", true);

        // 发起post请求
        $.ajax("/api/code/send", {
            method: 'POST',
            contentType: 'application/json',
            dataType: 'json',
            data: JSON.stringify({
                email: email // 邮箱
            })
        }).done((data) => {
            $("#email").prop("disabled", false);

            if (data.code == 403) { // 状况码为403则发送失败
                dsnackbar('warning', '请勿操之过急哦~');
                this.disabled = false;
            } else if (data.code == 200) { // 状况码为200则发送失败
                dsnackbar('success', '咻~验证码已发送！');

                // 按钮倒计时
                var c = 60; // 定义c，为剩余时间
                this.innerText = String(c);  // 更新内容

                var x = setInterval(() => { // 每秒执行一遍
                    c--; // 剩余时间-1

                    this.innerText = String(c); // 更新内容
                    this.disabled = true; // 禁用按钮

                    if (c <= 0) { // 倒计时完毕
                        this.innerText = "发送"; // 重置内容
                        this.disabled = false; // 启用按钮

                        clearInterval(x); // 退出循环
                    }
                }, 1000);
            } else {
                dsnackbar('error', '请稍后再试');
            }
        }).fail(() => {
            dsnackbar('error', '请稍后再试');
            this.disabled = false;
            $("#email").prop("disabled", false);
        });
    });
}]);